#include <stdio.h>

int data[2] = {100, 200};
int moredata[2] = {300, 400};

int main(int argc, char *argv[]) {
	int *p1, *p2, *p3;
	p1 = p2 = data;
	p3 = moredata;
	
	printf("  *p1 = %d,    *p2 = %d,      *p3 = %d \n",*p1, *p2, *p3);
	// * 与 ++ 的优先级相同，按照结合律，从右到左计算
	// *p1++    ++位于p1后面，*p1先将pi对应的值取出，然后将指针+1，当再使用*p1的时候，已经是数组的下一个，对应当前的值没有影响，所以*p1++ = 100
	// *++p2    ++位于p2前面，*p2先移动指针到下一个位置，然后指针对应的值，所以*++p2 = 200
	// (*p3)++  ++位于括号后面，先计算括号里面的*p3=300，此时*p3指针对应的值是300，然后执行++，对当前值不会影响，
	// 而是改变当前位置指针对应的值，在下一次输出，当前输出300，下一次还是这个指针，但是值被加一，所以值是301 
	printf("*p1++ = %d,  *++p2 = %d,  (*p3)++ = %d \n",*p1++, *++p2, (*p3)++);
	printf("  *p1 = %d,    *p2 = %d,      *p3 = %d \n",*p1, *p2, *p3);
	
}